package experiment5.demo2;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * @author Anonymous
 * @description
 * @date 2020/3/9 10:01
 * <p>
 * 完成内容
 * 1. 连接服务器
 * 2. 启动接收端线程和发送端线程
 * 需要注意:
 * 提供给服务器一个用户名，这里是在连接Socket获取之后，第一次发送数据
 * 给服务器时需要提供的，也就是第一次启动Send发送线程完成的
 */

public class Client {
    public static void main(String[] args) {
        // 从键盘上获取用户输入的数据
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        Socket socket = null;
        String name = null;
        try {
            System.out.println("请输入你的用户名：");
            name = br.readLine();

            if ("".equals(name)) {
                return;
            }

            // 存在连接异常情况，考虑捕获异常处理
            socket = new Socket("127.0.0.1", 8888);
        } catch (IOException e) {
            System.err.println("连接失败!!!");
            try {
                br.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
            System.exit(0);
        }

        // 使用线程池启动两个线程，一个是发送一个接受
        ExecutorService pool = Executors.newFixedThreadPool(2);

        pool.submit(new ClientSend(socket, name));
        pool.submit(new ClientReceive(socket));
    }

}
